
#Region "Using Directives"

Imports System

#End Region

Namespace C4F.DevKit.Bluetooth.ObjectPushProfile

    ''' <summary>
    ''' Class representing an asynchronous Object Push Profile Request.
    ''' </summary>
    Friend Class OPPRequest

#Region "Private Fields"

        ''' <summary>
        ''' The user-supplied state object supplied when the asynchronous 
        ''' operation was requested.
        ''' </summary>
        Private m_userState As Object

        ''' <summary>
        ''' Type of the asynchronous ObjectPushProfile operation.
        ''' </summary>
        Private m_requestType As OPPRequestType

        ''' <summary>
        ''' The input parameters required for the asynchronous operation.
        ''' </summary>
        Private m_requestParameters() As Object

#End Region

#Region "Public Properties"

        ''' <summary>
        ''' Gets the type of the asynchronous ObjectPushProfile operation.
        ''' </summary>
        Public ReadOnly Property RequestType() As OPPRequestType

            Get
                Return Me.m_requestType
            End Get

        End Property

        ''' <summary>
        ''' Gets the user-supplied state object supplied when the asynchronous
        ''' operation was requested.
        ''' </summary>
        Public ReadOnly Property UserState() As Object

            Get
                Return Me.m_userState
            End Get

        End Property

        ''' <summary>
        ''' Gets the input parameters required for the asynchronous operation.
        ''' </summary>
        Public ReadOnly Property RequestParameters() As Object()

            Get
                Return Me.m_requestParameters
            End Get

        End Property

#End Region

#Region "Constructors"

        ''' <summary>
        ''' Initializes the OPPRequest object.
        ''' </summary>
        ''' <param name="requestType">The type of asynchronous operation.
        ''' </param>
        ''' <param name="userState">The user-supplied state object supplied 
        ''' when the asynchronous 
        ''' operation was requested.</param>
        ''' <param name="requestParameters">The input parameters required for
        ''' the asynchronous operation.</param>
        Public Sub New(ByVal requestType As OPPRequestType, ByVal userState As Object, ByVal ParamArray requestParameters() As Object)

            With Me

                .m_requestType = requestType
                .m_userState = userState
                .m_requestParameters = requestParameters

            End With
        End Sub

#End Region

    End Class

End Namespace
